//
//  main.swift
//  ZhuangShiPattern
//
//  Created by mac on 2017/11/8.
//  Copyright © 2017年 RRC. All rights reserved.
//

import Foundation

print("Hello, World!")

//把成绩单拿过来
var sr:SchoolReport = FouthGradeSchoolReport()
//看成绩单
//sr.report()

///修饰后
//var sugarSR:SchoolReport = SugarFouthGradeSchoolReport()
//sugarSR.report()
//sugarSR.sign(name: "老三")

///再次修饰后
sr = HighScoreDecorator(sr: sr)//加了最高分说明成绩单
sr = SortDecorator(sr: sr)//又加了成绩排名的说明
sr.report()
sr.sign(name: "老三")

/**
    装饰模式定义：动态地给一个对象添加一些额外的职责。就增加功能来说，装饰模式相比生成子类更为灵活。
    注：在装饰模式中，必然有一个最基本、最核心、最原始的接口或抽象类充当Component抽象构件。
 */
